/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pooproj.fachada;

import java.util.ArrayList;
import pooproj.basica.Categoria;
import pooproj.basica.Cliente;
import pooproj.basica.Filme;
import pooproj.basica.LocMidia;
import pooproj.basica.Locacao;
import pooproj.basica.Midia;
import pooproj.erro.AllgemeinException;
import pooproj.regra.RNCategoria;
import pooproj.regra.RNCliente;
import pooproj.regra.RNFilme;
import pooproj.regra.RNLocMidia;
import pooproj.regra.RNLocacao;
import pooproj.regra.RNMidia;

/**
 *
 * @author Daniella
 */
public class Fachada {
    
    private static Fachada instancia;
    
    private Fachada(){
        
    }
    
    public static Fachada getInstancia(){
        if(instancia==null){
            instancia = new Fachada();
        }
        return instancia;
    }
    
    //INÍCIO DA FACHADA CLIENTE---------------------------------------//
    
   
    public void incluirCliente(Cliente c) throws AllgemeinException, Exception{
        RNCliente rn = new RNCliente();
        rn.valida(c);
        rn.verificaRedundancia(c);
        rn.cadastra(c);
    }
    
    public Cliente consultaNomeCliente(String nome) throws AllgemeinException, Exception{
        RNCliente rn = new RNCliente();
        return rn.consulta(nome);
    }
    
    public Cliente consultaIdCliente(int id) throws AllgemeinException, Exception{
        RNCliente rn = new RNCliente();
        return rn.consulta(id);
    }
    
    public void alteraCliente(Cliente c) throws AllgemeinException{
        RNCliente rn = new RNCliente();
        rn.altera(c);
    }
    
    public void excluiCliente(Cliente c) throws AllgemeinException, Exception{
        RNCliente rn = new RNCliente();
        rn.verificaExiste(c);
        rn.exclui(c);
    }
    
    public ArrayList listarCliente() throws AllgemeinException{
        RNCliente rn = new RNCliente();
        return rn.lista();
    }
    
    //FIM DA FACHADA CLIENTE------------------------------------------//
    
    //INÍCIO DA FACHADA CATEGORIA-------------------------------------//
    
    public void incluirCategoria(Categoria cat) throws AllgemeinException{
        RNCategoria rn = new RNCategoria();
        rn.valida(cat);
        rn.verificaRedundancia(cat);
        rn.cadastra(cat);
    }
    
    public Categoria consultaNomeCategoria(String nome) throws AllgemeinException{
        RNCategoria rn = new RNCategoria();
        return rn.consulta(nome);
    }
    
    public Categoria consultaIdCategoria(int id) throws AllgemeinException{
        RNCategoria rn = new RNCategoria();
        return rn.consulta(id);
    }
    
    public void alteraCategoria(Categoria cat) throws AllgemeinException{
        RNCategoria rn = new RNCategoria();
        rn.altera(cat);
    }
    
    public void excluiCategoria(Categoria cat) throws AllgemeinException{
        RNCategoria rn = new RNCategoria();
        rn.verificaExiste(cat);
        rn.exclui(cat);
    }
    
    public ArrayList listarCategoria() throws AllgemeinException{
        RNCategoria rn = new RNCategoria();
        return rn.lista();
    }
    
    //FIM DA FACHADA CATEGORIA----------------------------------------//
    
    //INÍCIO DA FACHADA FILME-----------------------------------------//
    
     public void incluirFilme(Filme f) throws AllgemeinException{
        RNFilme rn = new RNFilme();
        rn.valida(f);
        rn.verificaRedundancia(f);
        rn.cadastra(f);
    }
    
    public Filme consultaNomeFilme(String nome) throws AllgemeinException{
        RNFilme rn = new RNFilme();
        return rn.consulta(nome);
    }
    
    public Filme consultaIdFilme(int id) throws AllgemeinException{
        RNFilme rn = new RNFilme();
        return rn.consulta(id);
    }
    
    public void alteraFilme(Filme f) throws AllgemeinException{
        RNFilme rn = new RNFilme();
        rn.altera(f);
    }
    
    public void excluiFilme(Filme f) throws AllgemeinException{
        RNFilme rn = new RNFilme();
        rn.verificaExiste(f);
        rn.exclui(f);
    }
    
    public ArrayList listarFilme() throws AllgemeinException{
        RNFilme rn = new RNFilme();
        return rn.lista();
    }
    
    //FIM DA FACHADA FILME -------------------------------------------//
    
    //INÍCIO DA FACHADA MIDIA ----------------------------------------//
    
    public void incluirMidia(Midia m) throws AllgemeinException{
        RNMidia rn = new RNMidia();
        rn.valida(m);
        rn.cadastra(m);
    }
       
    public Midia consultaIdMidia(int id) throws AllgemeinException{
        RNMidia rn = new RNMidia();
        return rn.consulta(id);
    }
       
    public Midia consultaMidiaCodFilme(int codFilme) throws AllgemeinException{
        RNMidia rn = new RNMidia();
        return rn.consultaCodFilme(codFilme);
    }
    
    public void alteraMidia(Midia m) throws AllgemeinException{
        RNMidia rn = new RNMidia();
        rn.altera(m);
    }
    
    public void excluiMidia(Midia m) throws AllgemeinException{
        RNMidia rn = new RNMidia();
        rn.verificaExiste(m);
        rn.exclui(m);
    }
    
    public ArrayList listarMidia() throws AllgemeinException{
        RNMidia rn = new RNMidia();
        return rn.lista();
    }
    
    //FIM DA FACHADA MIDIA -------------------------------------------//
    
    //INÍCIO DA FACHADA LOCACAO --------------------------------------//
    
    
    
    public void incluirLocacao(Locacao l) throws AllgemeinException{
        RNLocacao rn = new RNLocacao();
        rn.valida(l);
        rn.cadastra(l);
    }
    
    public Locacao consultaCodLoc(int id) throws AllgemeinException{
        RNLocacao rn = new RNLocacao();
        return rn.consultaCodLoc(id);
    }
    
    public Locacao consultaCodCliente(int id) throws AllgemeinException{
        RNLocacao rn = new RNLocacao();
        return rn.consultaCodCliente(id);
    }
    
    public Locacao consultaDtLoc(String data) throws AllgemeinException{
        RNLocacao rn = new RNLocacao();
        return rn.consultaDtLoc(data);
    }
    
    public Locacao consultaDtDevol(String data) throws AllgemeinException{
        RNLocacao rn = new RNLocacao();
        return rn.consultaDtDevol(data);
    }
    
    public int consultaTudo(String dtLoc, String dtDevol, int codCliente) throws AllgemeinException{
        RNLocacao rn = new RNLocacao();
        return rn.consultaTudo(dtLoc, dtDevol, codCliente);
    }
    
    public void alteraLoc(Locacao l) throws AllgemeinException{
        RNLocacao rn = new RNLocacao();
        rn.altera(l);
    }
    
    public void excluiLocacao(Locacao l) throws AllgemeinException{
        RNLocacao rn = new RNLocacao();
        rn.verificaExiste(l);
        rn.exclui(l);
    }
    
    public ArrayList listarLocacao() throws AllgemeinException{
        RNLocacao rn = new RNLocacao();
        return rn.lista();
    }
    
    //FIM DA FACHADA LOCACAO -----------------------------------------//
    
    //INÍCIO DA FACHADA LOCMIDIA -------------------------------------//
    
    public void incluirLocMidia(LocMidia lm) throws AllgemeinException{
        RNLocMidia rn = new RNLocMidia();
        rn.inserir(lm);
    }
    
    public void alterarLocMidia(LocMidia lm) throws AllgemeinException{
        RNLocMidia rn = new RNLocMidia();
        rn.alterar(lm);
    }
    
    public void excluirLocMidia(LocMidia lm) throws AllgemeinException{
        RNLocMidia rn = new RNLocMidia();
        rn.excluir(lm);
    }
    
    public LocMidia consultarLocMidiaCodLoc(int codLoc) throws AllgemeinException{
        RNLocMidia rn = new RNLocMidia();
        return rn.consultarCodLoc(codLoc);
    }
    
    public LocMidia consultarLocMidiaCodMidia(int codMidia) throws AllgemeinException{
        RNLocMidia rn = new RNLocMidia();
        return rn.consultarCodMidia(codMidia);
    }
    
    public ArrayList<LocMidia> listarLocMidia() throws AllgemeinException{
        RNLocMidia rn = new RNLocMidia();
        return rn.listar();
    }
    
    //FIM DA FACHADA LOCMIDIA ---------------------------------------//
}
